package com.yneusoft.pctask.controller;

import com.yneusoft.common.model.ResponseWrapper;
import com.yneusoft.pctask.model.*;
import com.yneusoft.pctask.service.ProjectManageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * @Description： 项目管理controller
 * @Author: wbf
 * @Date: 2021/11/12 10:14
 */
@CrossOrigin
@RestController
@RequestMapping("/projectManage")
public class ProjectManageController {
    @Autowired
    ProjectManageService projectManageService;
    /**
     * 1.获取项目列表
     * @param param 搜索关键字 分页
     * @return 项目列表
     */
    @GetMapping("/getProjectList")
    public ResponseWrapper getProjectListResult(@Validated GetProjectListParam param){
        System.out.println(param);
        return projectManageService.getProjectListResult(param);
    }

    /**
     * 2.修改项目状态
     * @param param 参数
     * @return 操作成功？
     */
    @PostMapping("/updateProjectState")
    public ResponseWrapper updateProjectState(@Validated @RequestBody UpdateProjectStateParam param){
        return projectManageService.updateProjectState(param);
    }

    /**
     * 3、获取项目工时明细
     * @param param 请求参数
     * @return 工时列表
     */
    @GetMapping("/getProjectWorkHourList")
    public ResponseWrapper getProjectWorkHourList(@Validated GetProjectWorkHourListParam param){
        return projectManageService.getProjectWorkHourList(param);
    }

    /**
     * 4、【新增/修改】获取员工列表
     * @return 员工列表
     */
    @GetMapping("/getStaffList")
    public ResponseWrapper getStaffList(){
        return projectManageService.getStaffList();
    }

    /**
     * 5、【新增/修改】获取项目类型列表
     * @return 项目类型列表
     */
    @GetMapping("/getProjectTypeList")
    public ResponseWrapper getProjectTypeList(){
        return projectManageService.getProjectTypeList();
    }

    /**
     * 6、【新增/修改】获取项目状态列表
     * @return 项目状态列表
     */
    @GetMapping("/getProjectStateList")
    public ResponseWrapper getProjectStateList(){
        return projectManageService.getProjectStateList();
    }

    /**
     * 7、【新增/修改】新增/修改项目信息
     * @param param 新增/修改参数
     * @return 结果
     */
    @PostMapping("/insertOrUpdateProjectInfo")
    public ResponseWrapper insertOrUpdateProjectInfo(@RequestBody @Validated InsertOrUpdateProjectInfoParam param){
        return projectManageService.insertOrUpdateProjectInfo(param);
    }

    /**
     * 8、【新增/修改】获取修改时的项目信息
     * @param param 项目aid
     * @return 项目信息
     */
    @GetMapping("/getProjectInfo")
    public ResponseWrapper getProjectInfo(@Validated GetProjectInfoParam param){
        return projectManageService.getProjectInfo(param);
    }
}
